home *** CD-ROM | disk | FTP | other *** search
-
- func i32x fn_i_CreateCyclistPropositionSubset(i32x _iCyclistId,i32x _iTeamId,i32x _iSens)
- {
- var i32x iSubset;
- // create subset on DYN_xchange_goal
- iSubset = Subset_Constructor("PropositioncyclistSubset", DATABASE_SERVER);
- Database_AddTables(iSubset,1);
- Table_SetName(iSubset, 0, "DYN_xchange_cyclist");
- TableSubset_SelectColumns(iSubset, 0, "*");
-
- // create query to fill the subset
- Query_Create(0,iSubset);
- Query_SelectTable( 0, "DYN_xchange_cyclist");
- Query_SelectWhereIntEqual(0,"DYN_xchange_cyclist.fkIDcyclist", _iCyclistId);
- Query_SelectWhereIntEqual(0,"DYN_xchange_cyclist.fkIDteam", _iTeamId);
- Query_SelectWhereIntEqual(0,"DYN_xchange_cyclist.ia_i_sens", _iSens);
- Query_Execute(0);
-
- return iSubset;
- }
-
- func i32x fn_i_CreateSponsorPropositionSubset(i32x _iSponsorId,i32x _iTeamId,i32x _iSens)
- {
- var i32x iSubset;
- // create subset on DYN_xchange_goal
- iSubset = Subset_Constructor("PropositionsponsorSubset", DATABASE_SERVER);
- Database_AddTables(iSubset,1);
- Table_SetName(iSubset, 0, "DYN_xchange_sponsor");
- TableSubset_SelectColumns(iSubset, 0, "*");
-
- // create query to fill the subset
- Query_Create(0,iSubset);
- Query_SelectTable( 0, "DYN_xchange_sponsor");
- Query_SelectWhereIntEqual(0,"DYN_xchange_sponsor.fkIDsponsor", _iSponsorId);
- Query_SelectWhereIntEqual(0,"DYN_xchange_sponsor.fkIDteam", _iTeamId);
- Query_SelectWhereIntEqual(0,"DYN_xchange_sponsor.ia_i_sens", _iSens);
- Query_Execute(0);
-
- return iSubset;
- }
-
- func i32x fn_i_CreateLayoffPropositionSubset(i32x _iCyclistId,i32x _iTeamId,i32x _iSens)
- {
- var i32x iSubset;
- // create subset on DYN_xchange_goal
- iSubset = Subset_Constructor("PropositionlayoffSubset", DATABASE_SERVER);
- Database_AddTables(iSubset,1);
- Table_SetName(iSubset, 0, "DYN_xchange_layoff");
- TableSubset_SelectColumns(iSubset, 0, "*");
-
- // create query to fill the subset
- Query_Create(0,iSubset);
- Query_SelectTable( 0, "DYN_xchange_layoff");
- Query_SelectWhereIntEqual(0,"DYN_xchange_layoff.fkIDcyclist", _iCyclistId);
- Query_SelectWhereIntEqual(0,"DYN_xchange_layoff.fkIDteam", _iTeamId);
- Query_SelectWhereIntEqual(0,"DYN_xchange_layoff.ia_i_sens", _iSens);
- Query_Execute(0);
-
- return iSubset;
- }
-
- func i32x fn_i_CreateTransfertPropositionSubset(i32x _iCyclistId,i32x _iTeamId,i32x _iSens)
- {
- var i32x iSubset;
- // create subset on DYN_xchange_goal
- iSubset = Subset_Constructor("PropostiontransfertSubset", DATABASE_SERVER);
- Database_AddTables(iSubset,1);
- Table_SetName(iSubset, 0, "DYN_xchange_transfert");
- TableSubset_SelectColumns(iSubset, 0, "*");
-
- // create query to fill the subset
- Query_Create(0,iSubset);
- Query_SelectTable( 0, "DYN_xchange_transfert");
- Query_SelectWhereIntEqual(0,"DYN_xchange_transfert.fkIDcyclist", _iCyclistId);
- Query_SelectWhereIntEqual(0,"DYN_xchange_transfert.fkIDteam", _iTeamId);
- Query_SelectWhereIntEqual(0,"DYN_xchange_transfert.ia_i_sens", _iSens);
- Query_Execute(0);
-
- return iSubset;
- }
-
- func i32x fnReadDB_PropositionSponsor(i32x _iUserId,i32x _iDatabase)
- {
- var i32x iTeamId;
- var i32x iXchangeTable,iNumRows;
- var i32x i,iOk;
-
- // Get user team id
- iTeamId = Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId);
-
- // Print source database
- //Database_HTMLDebugPrint(_iDatabase);
-
- // Check db
- iXchangeTable = Table_GetIndexFromName(_iDatabase,"DYN_xchange_sponsor");
- if(iXchangeTable<0)
- return -1;
- iNumRows = Table_GetNumRows(_iDatabase,iXchangeTable);
- print("PropositionSponsor TeamId="+itoa(iTeamId)+" iNumRows="+itoa(iNumRows)+"\n");
- if(iNumRows < 1)
- return -1;
-
- // Sort table by sens
- Table_Sort(_iDatabase,"DYN_xchange_sponsor","ia_i_sens",-1);
-
- // For each row update proposition
- i=0;
- iOk = 1;
- while(i<iNumRows)
- {
- iOk = fn_iReadPropositionSponsorRow(iTeamId,_iDatabase,i);
-
- if(iOk != 1)
- return iOk;
-
- i=i+1;
- }
- Database_SendSynchronization(DATABASE_SERVER);
- //Database_HTMLDebugPrint(DATABASE_SERVER);
- return iOk;
- }
- func i32x fn_iReadPropositionSponsorRow(i32x _iTeamId,i32x _iDatabase,i32x _iRow)
- {
- var i32x iSens,iXChangeId,iSponsorId,iStatus;
- var i32x iSubsetId,iTableSubsetId,iNumExistingProp;
- var i32x iValid;
-
- // Get proposition sens
- iSens = Database_GetIntData(_iDatabase,"DYN_xchange_sponsor.ia_i_sens",ROW_INDEX,_iRow);
-
- // Get proposition Id
- iXChangeId = Database_GetIntData(_iDatabase,"DYN_xchange_sponsor.IDxchange_sponsor",ROW_INDEX,_iRow);
-
- // Get sponsor Id
- iSponsorId = Database_GetIntData(_iDatabase,"DYN_xchange_sponsor.fkIDsponsor",ROW_INDEX,_iRow);
-
- // Get status
- iStatus = Database_GetIntData(_iDatabase,"DYN_xchange_sponsor.fkIDstatus_enum",ROW_INDEX,_iRow);
-
- print("\tRead Sponsor Row="+itoa(_iRow)+" Id="+itoa(iXChangeId)+" with sponsor "+itoa(iSponsorId)+"\n");
- print("\tStatus="+itoa(iStatus)+" iSens="+itoa(iSens)+"\n");
- // Make subset to find existing proposition
- iSubsetId = fn_i_CreateSponsorPropositionSubset(iSponsorId,_iTeamId,iSens);
- iTableSubsetId = Table_GetIndexFromName(iSubsetId,"DYN_xchange_sponsor");
- iNumExistingProp = Table_GetNumRows(iSubsetId,iTableSubsetId);
-
- iValid = 0;
- if(iSens == 1)
- {
- // Team to sponsor proposition
- if(iNumExistingProp>0)
- {
- var i32x iRefXChangeId,iExistXChangeId,iExistXchangeRow;
- // Another proposition exist
- // Update it and mark it as counter
- // Get key
- iExistXChangeId = Database_GetIntData(iSubsetId,"DYN_xchange_sponsor.IDxchange_sponsor",ROW_INDEX,0);
- iExistXchangeRow = Join_GetRow(g_stJoins.m_iXChangeSponsor_iXChangeID,iExistXChangeId,ROW_KEY,ROW_INDEX);
- iRefXChangeId = Join_GetIntFromIndex(g_stJoins.m_iXChangeSponsor_ifkIDXChangeID,iExistXchangeRow);
-
- // Update record
- iValid = fn_iRecordSponsorProposition(_iTeamId,iRefXChangeId,iExistXchangeRow,_iDatabase,_iRow);
- }
- else
- {
- var i32x iNewRow;
- // New proposition
- // Create a new row in DYN_xchange_cyclist
- iNewRow = Table_AddRow(DATABASE_SERVER,Table_GetIndexFromName(DATABASE_SERVER,"DYN_xchange_sponsor"));
-
- // Update record
- iValid = fn_iRecordSponsorProposition(_iTeamId,0,iNewRow,_iDatabase,_iRow);
- }
- }
- else if(iSens == 0)
- {
- // sponsor to team counter proposition
- if((iStatus==e_Status_Accepted)||(iStatus==e_Status_Refused)||(iStatus==e_Status_Countered))
- {
- // The team has accepted or refused the sponsor counter proposition
- var i32x iRefXChangeId,iExistXChangeId,iExistXchangeRow;
-
- // Update it and mark it as accepted or refused
- // Get key
- iExistXChangeId = Database_GetIntData(iSubsetId,"DYN_xchange_sponsor.IDxchange_sponsor",ROW_INDEX,0);
- iExistXchangeRow = Join_GetRow(g_stJoins.m_iXChangeSponsor_iXChangeID,iExistXChangeId,ROW_KEY,ROW_INDEX);
- iRefXChangeId = Join_GetIntFromIndex(g_stJoins.m_iXChangeSponsor_ifkIDXChangeID,iExistXchangeRow);
-
- // Update answer
- Join_SetIntFromIndex(g_stJoins.m_iXChangeSponsor_iStatusId,iExistXchangeRow,iStatus);
-
- iValid = 1;
- }
- }
-
- // Destroy subset
- Subset_Destructor(iSubsetId);
-
- return iValid;
- }
- func i32x fn_iRecordSponsorProposition(i32x _iTeamId,i32x _iRefXchangeId,i32x _iExistXchangeRow,i32x _iDatabase,i32x _iRow)
- {
- // SponsorID
- Join_SetIntFromIndex(g_stJoins.m_iXChangeSponsor_iSponsorID,_iExistXchangeRow,
- Database_GetIntData(_iDatabase,"DYN_xchange_sponsor.fkIDsponsor",ROW_INDEX,_iRow));
-
- // Team id
- Join_SetIntFromIndex(g_stJoins.m_iXChangeSponsor_iTeamID,_iExistXchangeRow,_iTeamId);
-
- // Sens
- Join_SetIntFromIndex(g_stJoins.m_iXChangeSponsor_iSens,_iExistXchangeRow,
- Database_GetIntData(_iDatabase,"DYN_xchange_sponsor.ia_i_sens",ROW_INDEX,_iRow));
-
- // Status
- var i32x iLastStatus;
- iLastStatus = Join_GetIntFromIndex(g_stJoins.m_iXChangeSponsor_iStatusId,_iExistXchangeRow);
- if((iLastStatus == e_Status_Countered)||(iLastStatus == 0))
- Join_SetIntFromIndex(g_stJoins.m_iXChangeSponsor_iStatusId,_iExistXchangeRow,e_Status_New);
-
- // Duration
- Join_SetIntFromIndex(g_stJoins.m_iXChangeSponsor_iDuration,_iExistXchangeRow,
- Database_GetIntData(_iDatabase,"DYN_xchange_sponsor.finan_i_duration",ROW_INDEX,_iRow));
-
- // Init amount
- Join_SetFloatFromIndex(g_stJoins.m_iXChangeSponsor_fInitAmount,_iExistXchangeRow,
- Database_GetFloatData(_iDatabase,"DYN_xchange_sponsor.finan_f_initial_amount",ROW_INDEX,_iRow));
-
- // Amount
- Join_SetFloatFromIndex(g_stJoins.m_iXChangeSponsor_fAmount,_iExistXchangeRow,
- Database_GetFloatData(_iDatabase,"DYN_xchange_sponsor.finan_f_period_amount",ROW_INDEX,_iRow));
-
- // Old Xchange id
- Join_SetIntFromIndex(g_stJoins.m_iXChangeSponsor_ifkIDXChangeID,_iExistXchangeRow,_iRefXchangeId);
-
- if(_iRefXchangeId>0)
- {
- // Mark other has countered
- Join_SetIntFromKey(g_stJoins.m_iXChangeSponsor_iStatusId,_iRefXchangeId,e_Status_Countered);
- }
-
- // Records proposition goals
- var i32x iXChangeId,iPropXChangeId;
- iPropXChangeId = Database_GetIntData(_iDatabase,"DYN_xchange_sponsor.IDxchange_sponsor",ROW_INDEX,_iRow);
- iXChangeId = Join_GetIntFromIndex(g_stJoins.m_iXChangeSponsor_iXChangeID,_iExistXchangeRow);
- fn_iRecordGoals(iXChangeId,iPropXChangeId,2,_iDatabase);
-
- return 1;
- }
-
- func i32x fnReadDB_PropositionCyclist(i32x _iUserId,i32x _iDatabase)
- {
- var i32x iTeamId;
- var i32x iXchangeTable,iNumRows;
- var i32x i,iOk;
-
- // Get user team id
- iTeamId = Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId);
-
- // Print source database
- //Database_HTMLDebugPrint(_iDatabase);
-
- // Check db
- iXchangeTable = Table_GetIndexFromName(_iDatabase,"DYN_xchange_cyclist");
- if(iXchangeTable<0)
- return -1;
- iNumRows = Table_GetNumRows(_iDatabase,iXchangeTable);
- if(iNumRows < 1)
- return -1;
-
- // Sort table by sens
- Table_Sort(_iDatabase,"DYN_xchange_cyclist","ia_i_sens",-1);
-
- // For each row update proposition
- i=0;
- iOk = 1;
- while(i<iNumRows)
- {
- iOk = fn_iReadPropositionCyclistRow(iTeamId,_iDatabase,i);
-
- if(iOk != 1)
- return iOk;
-
- i=i+1;
- }
- Database_SendSynchronization(DATABASE_SERVER);
- //Database_HTMLDebugPrint(DATABASE_SERVER);
- return iOk;
- }
- func i32x fn_iReadPropositionCyclistRow(i32x _iTeamId,i32x _iDatabase,i32x _iRow)
- {
- var i32x iSens,iXChangeId,iCyclistId,iCyclistTeamId,iStatus;
- var i32x iSubsetId,iTableSubsetId,iNumExistingProp;
- var i32x iValid;
-
- // Get proposition sens
- iSens = Database_GetIntData(_iDatabase,"DYN_xchange_cyclist.ia_i_sens",ROW_INDEX,_iRow);
-
- // Get proposition Id
- iXChangeId = Database_GetIntData(_iDatabase,"DYN_xchange_cyclist.IDxchange_cyclist",ROW_INDEX,_iRow);
-
- // Get cyclist Id
- iCyclistId = Database_GetIntData(_iDatabase,"DYN_xchange_cyclist.fkIDcyclist",ROW_INDEX,_iRow);
- iCyclistTeamId = Join_GetIntFromKey(g_stJoins.m_iCyclist_iTeamId,iCyclistId);
-
- // Get status
- iStatus = Database_GetIntData(_iDatabase,"DYN_xchange_cyclist.fkIDstatus_enum",ROW_INDEX,_iRow);
-
- // Make subset to find existing proposition
- iSubsetId = fn_i_CreateCyclistPropositionSubset(iCyclistId,_iTeamId,iSens);
- iTableSubsetId = Table_GetIndexFromName(iSubsetId,"DYN_xchange_cyclist");
- iNumExistingProp = Table_GetNumRows(iSubsetId,iTableSubsetId);
-
- iValid = 0;
- if(iSens == 0)
- {
- // Team to cyclist proposition
- if(iNumExistingProp>0)
- {
- var i32x iRefXChangeId,iExistXChangeId,iExistXchangeRow;
- // Another proposition exist
- // Get key
- iExistXChangeId = Database_GetIntData(iSubsetId,"DYN_xchange_cyclist.IDxchange_cyclist",ROW_INDEX,0);
- iExistXchangeRow = Join_GetRow(g_stJoins.m_iXChange_iXChangeID,iExistXChangeId,ROW_KEY,ROW_INDEX);
- iRefXChangeId = Join_GetIntFromIndex(g_stJoins.m_iXChange_ifkIDXChangeID,iExistXchangeRow);
-
- // Update record
- iValid = fn_iRecordCyclistProposition(_iTeamId,iRefXChangeId,iExistXchangeRow,_iDatabase,_iRow);
- }
- else
- {
- var i32x iNewRow;
- // New proposition
- // Create a new row in DYN_xchange_cyclist
- iNewRow = Table_AddRow(DATABASE_SERVER,Table_GetIndexFromName(DATABASE_SERVER,"DYN_xchange_cyclist"));
-
- // Update record
- iValid = fn_iRecordCyclistProposition(_iTeamId,0,iNewRow,_iDatabase,_iRow);
- }
- }
- else if(iSens == 1)
- {
- // Cyclist to team counter proposition
- if((iStatus==e_Status_Accepted)||(iStatus==e_Status_Refused)||(iStatus==e_Status_Countered))
- {
- // The team has accepted or refused the cyclist counter proposition
- var i32x iRefXChangeId,iExistXChangeId,iExistXchangeRow;
-
- // Update it and mark it as accepted or refused
- // Get key
- iExistXChangeId = Database_GetIntData(iSubsetId,"DYN_xchange_cyclist.IDxchange_cyclist",ROW_INDEX,0);
- iExistXchangeRow = Join_GetRow(g_stJoins.m_iXChange_iXChangeID,iExistXChangeId,ROW_KEY,ROW_INDEX);
- iRefXChangeId = Join_GetIntFromIndex(g_stJoins.m_iXChange_ifkIDXChangeID,iExistXchangeRow);
-
- // Update answer
- Join_SetIntFromIndex(g_stJoins.m_iXChange_iStatusId,iExistXchangeRow,iStatus);
-
- iValid = 1;
- }
- }
-
- // Destroy subset
- Subset_Destructor(iSubsetId);
-
- return iValid;
- }
-
- func i32x fn_iRecordCyclistProposition(i32x _iTeamId,i32x _iRefXchangeId,i32x _iExistXchangeRow,i32x _iDatabase,i32x _iRow)
- {
- // CyclistID
- Join_SetIntFromIndex(g_stJoins.m_iXChange_iCyclistID,_iExistXchangeRow,
- Database_GetIntData(_iDatabase,"DYN_xchange_cyclist.fkIDcyclist",ROW_INDEX,_iRow));
-
- // Team id
- Join_SetIntFromIndex(g_stJoins.m_iXChange_iTeamID,_iExistXchangeRow,_iTeamId);
-
- // Sens
- Join_SetIntFromIndex(g_stJoins.m_iXChange_iSens,_iExistXchangeRow,
- Database_GetIntData(_iDatabase,"DYN_xchange_cyclist.ia_i_sens",ROW_INDEX,_iRow));
-
- // Status = NEW
- var i32x iLastStatus;
- iLastStatus = Join_GetIntFromIndex(g_stJoins.m_iXChange_iStatusId,_iExistXchangeRow);
- if((iLastStatus == e_Status_Countered)||(iLastStatus == 0))
- Join_SetIntFromIndex(g_stJoins.m_iXChange_iStatusId,_iExistXchangeRow,e_Status_New);
-
- // Duration
- Join_SetIntFromIndex(g_stJoins.m_iXChange_iDuration,_iExistXchangeRow,
- Database_GetIntData(_iDatabase,"DYN_xchange_cyclist.finan_i_duration",ROW_INDEX,_iRow));
-
- // Init amount
- Join_SetFloatFromIndex(g_stJoins.m_iXChange_fInitAmount,_iExistXchangeRow,
- Database_GetFloatData(_iDatabase,"DYN_xchange_cyclist.finan_f_initial_amount",ROW_INDEX,_iRow));
-
- // Amount
- Join_SetFloatFromIndex(g_stJoins.m_iXChange_fAmount,_iExistXchangeRow,
- Database_GetFloatData(_iDatabase,"DYN_xchange_cyclist.finan_f_period_wage",ROW_INDEX,_iRow));
-
- // Old Xchange id
- Join_SetIntFromIndex(g_stJoins.m_iXChange_ifkIDXChangeID,_iExistXchangeRow,_iRefXchangeId);
-
- if(_iRefXchangeId>0)
- {
- // Mark other has countered
- Join_SetIntFromKey(g_stJoins.m_iXChange_iStatusId,_iRefXchangeId,e_Status_Countered);
- }
-
- // Records proposition goals
- var i32x iXChangeId,iPropXChangeId;
- iPropXChangeId = Database_GetIntData(_iDatabase,"DYN_xchange_cyclist.IDxchange_cyclist",ROW_INDEX,_iRow);
- iXChangeId = Join_GetIntFromIndex(g_stJoins.m_iXChange_iXChangeID,_iExistXchangeRow);
- fn_iRecordGoals(iXChangeId,iPropXChangeId,0,_iDatabase);
-
- return 1;
- }
-
- func i32x fnReadDB_PropositionLayoff(i32x _iUserId,i32x _iDatabase)
- {
- var i32x iTeamId;
- var i32x iXchangeTable,iNumRows;
- var i32x i,iOk;
-
- // Get user team id
- iTeamId = Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId);
-
- // Print source database
- //Database_HTMLDebugPrint(_iDatabase);
-
- // Check db
- iXchangeTable = Table_GetIndexFromName(_iDatabase,"DYN_xchange_layoff");
- if(iXchangeTable<0)
- return -1;
- iNumRows = Table_GetNumRows(_iDatabase,iXchangeTable);
- if(iNumRows < 1)
- return -1;
-
- // Sort table by sens
- Table_Sort(_iDatabase,"DYN_xchange_layoff","ia_i_sens",-1);
-
- // For each row update proposition
- i=0;
- iOk = 1;
- while(i<iNumRows)
- {
- iOk = fn_iReadPropositionLayoffRow(iTeamId,_iDatabase,i);
-
- if(iOk != 1)
- return iOk;
-
- i=i+1;
- }
- Database_SendSynchronization(DATABASE_SERVER);
- //Database_HTMLDebugPrint(DATABASE_SERVER);
- return iOk;
- }
- func i32x fn_iReadPropositionLayoffRow(i32x _iTeamId,i32x _iDatabase,i32x _iRow)
- {
- var i32x iSens,iXChangeId,iCyclistId,iCyclistTeamId,iStatus;
- var i32x iSubsetId,iTableSubsetId,iNumExistingProp;
- var i32x iValid;
-
- // Get proposition sens
- iSens = Database_GetIntData(_iDatabase,"DYN_xchange_layoff.ia_i_sens",ROW_INDEX,_iRow);
-
- // Get proposition Id
- iXChangeId = Database_GetIntData(_iDatabase,"DYN_xchange_layoff.IDxchange_layoff",ROW_INDEX,_iRow);
-
- // Get cyclist Id
- iCyclistId = Database_GetIntData(_iDatabase,"DYN_xchange_layoff.fkIDcyclist",ROW_INDEX,_iRow);
- iCyclistTeamId = Join_GetIntFromKey(g_stJoins.m_iCyclist_iTeamId,iCyclistId);
-
- // Get status
- iStatus = Database_GetIntData(_iDatabase,"DYN_xchange_layoff.fkIDstatus_enum",ROW_INDEX,_iRow);
-
- // Make subset to find existing proposition
- iSubsetId = fn_i_CreateLayoffPropositionSubset(iCyclistId,_iTeamId,iSens);
- iTableSubsetId = Table_GetIndexFromName(iSubsetId,"DYN_xchange_layoff");
- iNumExistingProp = Table_GetNumRows(iSubsetId,iTableSubsetId);
-
- iValid = 0;
- if(iSens == 0)
- {
- // Team to cyclist proposition
- if(iNumExistingProp>0)
- {
- var i32x iRefXChangeId,iExistXChangeId,iExistXchangeRow;
- // Another proposition exist
- // Update it and mark it as counter
- // Get key
- iExistXChangeId = Database_GetIntData(iSubsetId,"DYN_xchange_layoff.IDxchange_layoff",ROW_INDEX,0);
- iExistXchangeRow = Join_GetRow(g_stJoins.m_iXChangeLayoff_iXChangeID,iExistXChangeId,ROW_KEY,ROW_INDEX);
- iRefXChangeId = Join_GetIntFromIndex(g_stJoins.m_iXChangeLayoff_ifkIDXChangeID,iExistXchangeRow);
-
- // Update record
- iValid = fn_iRecordLayoffProposition(_iTeamId,iRefXChangeId,iExistXchangeRow,_iDatabase,_iRow);
- }
- else
- {
- var i32x iNewRow;
- // New proposition
- // Create a new row in DYN_xchange_cyclist
- iNewRow = Table_AddRow(DATABASE_SERVER,Table_GetIndexFromName(DATABASE_SERVER,"DYN_xchange_layoff"));
-
- // Update record
- iValid = fn_iRecordLayoffProposition(_iTeamId,0,iNewRow,_iDatabase,_iRow);
- }
- }
- else if(iSens == 1)
- {
- // Team buyer to team seller proposition
- if((iStatus==e_Status_Accepted)||(iStatus==e_Status_Refused)||(iStatus==e_Status_Countered))
- {
- // The team has accepted or refused the cyclist counter proposition
- var i32x iRefXChangeId,iExistXChangeId,iExistXchangeRow;
-
- // Update it and mark it as accepted or refused
- // Get key
- iExistXChangeId = Database_GetIntData(iSubsetId,"DYN_xchange_layoff.IDxchange_layoff",ROW_INDEX,0);
- iExistXchangeRow = Join_GetRow(g_stJoins.m_iXChangeLayoff_iXChangeID,iExistXChangeId,ROW_KEY,ROW_INDEX);
- iRefXChangeId = Join_GetIntFromIndex(g_stJoins.m_iXChangeLayoff_ifkIDXChangeID,iExistXchangeRow);
-
- // Update answer
- Join_SetIntFromIndex(g_stJoins.m_iXChangeLayoff_iStatusId,iExistXchangeRow,iStatus);
-
- iValid = 1;
- }
- }
-
- // Destroy subset
- Subset_Destructor(iSubsetId);
-
- return iValid;
- }
-
- func i32x fn_iRecordLayoffProposition(i32x _iTeamId,i32x _iRefXchangeId,i32x _iExistXchangeRow,i32x _iDatabase,i32x _iRow)
- {
- // CyclistID
- Join_SetIntFromIndex(g_stJoins.m_iXChangeLayoff_iCyclistID,_iExistXchangeRow,
- Database_GetIntData(_iDatabase,"DYN_xchange_layoff.fkIDcyclist",ROW_INDEX,_iRow));
-
- // Team id
- Join_SetIntFromIndex(g_stJoins.m_iXChangeLayoff_iTeamID,_iExistXchangeRow,_iTeamId);
-
- // Sens
- Join_SetIntFromIndex(g_stJoins.m_iXChangeLayoff_iSens,_iExistXchangeRow,
- Database_GetIntData(_iDatabase,"DYN_xchange_layoff.ia_i_sens",ROW_INDEX,_iRow));
-
- // Status
- var i32x iLastStatus;
- iLastStatus = Join_GetIntFromIndex(g_stJoins.m_iXChangeLayoff_iStatusId,_iExistXchangeRow);
- if((iLastStatus == e_Status_Countered)||(iLastStatus == 0))
- Join_SetIntFromIndex(g_stJoins.m_iXChangeLayoff_iStatusId,_iExistXchangeRow,e_Status_New);
-
- // Init amount
- Join_SetFloatFromIndex(g_stJoins.m_iXChangeLayoff_fInitAmount,_iExistXchangeRow,
- Database_GetFloatData(_iDatabase,"DYN_xchange_layoff.finan_f_indemnities",ROW_INDEX,_iRow));
-
- // Old Xchange id
- Join_SetIntFromIndex(g_stJoins.m_iXChangeLayoff_ifkIDXChangeID,_iExistXchangeRow,_iRefXchangeId);
-
- if(_iRefXchangeId>0)
- {
- // Mark other has countered
- Join_SetIntFromKey(g_stJoins.m_iXChangeLayoff_iStatusId,_iRefXchangeId,e_Status_Countered);
- }
- return 1;
- }
-
-
- func i32x fnReadDB_PropositionTransfert(i32x _iUserId,i32x _iDatabase)
- {
- var i32x iTeamId;
- var i32x iXchangeTable,iNumRows;
- var i32x i,iOk;
-
- // Get user team id
- iTeamId = Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId);
-
- // Print source database
- //Database_HTMLDebugPrint(_iDatabase);
-
- // Check db
- iXchangeTable = Table_GetIndexFromName(_iDatabase,"DYN_xchange_transfert");
- if(iXchangeTable<0)
- return -1;
- iNumRows = Table_GetNumRows(_iDatabase,iXchangeTable);
- if(iNumRows < 1)
- return -1;
-
- // Sort table by sens
- Table_Sort(_iDatabase,"DYN_xchange_transfert","ia_i_sens",1);
-
- // For each row update proposition
- i=0;
- iOk = 1;
- while(i<iNumRows)
- {
- iOk = fn_iReadPropositionTransfertRow(iTeamId,_iDatabase,i);
-
- if(iOk != 1)
- return iOk;
-
- i=i+1;
- }
- Database_SendSynchronization(DATABASE_SERVER);
- //Database_HTMLDebugPrint(DATABASE_SERVER);
- return iOk;
- }
- func i32x fn_iReadPropositionTransfertRow(i32x _iTeamId,i32x _iDatabase,i32x _iRow)
- {
- var i32x iSens,iXChangeId,iCyclistId,iCyclistTeamId,iStatus;
- var i32x iSubsetId,iTableSubsetId,iNumExistingProp;
- var i32x iValid;
-
- // Get proposition sens
- iSens = Database_GetIntData(_iDatabase,"DYN_xchange_transfert.ia_i_sens",ROW_INDEX,_iRow);
-
- // Get proposition Id
- iXChangeId = Database_GetIntData(_iDatabase,"DYN_xchange_transfert.IDxchange_transfert",ROW_INDEX,_iRow);
-
- // Get cyclist Id
- iCyclistId = Database_GetIntData(_iDatabase,"DYN_xchange_transfert.fkIDcyclist",ROW_INDEX,_iRow);
- iCyclistTeamId = Join_GetIntFromKey(g_stJoins.m_iCyclist_iTeamId,iCyclistId);
-
- // Get status
- iStatus = Database_GetIntData(_iDatabase,"DYN_xchange_transfert.fkIDstatus_enum",ROW_INDEX,_iRow);
-
- // Make subset to find existing proposition
- iSubsetId = fn_i_CreateTransfertPropositionSubset(iCyclistId,_iTeamId,iSens);
- iTableSubsetId = Table_GetIndexFromName(iSubsetId,"DYN_xchange_transfert");
- iNumExistingProp = Table_GetNumRows(iSubsetId,iTableSubsetId);
-
- iValid = 0;
- if(iSens == 0)
- {
- // Team buyer to seller proposition
- if(iNumExistingProp>0)
- {
- var i32x iRefXChangeId,iExistXChangeId,iExistXchangeRow;
- // Another proposition exist
- // Update it and mark it as counter
- // Get key
- iExistXChangeId = Database_GetIntData(iSubsetId,"DYN_xchange_transfert.IDxchange_transfert",ROW_INDEX,0);
- iExistXchangeRow = Join_GetRow(g_stJoins.m_iXChangeTransfert_iXChangeID,iExistXChangeId,ROW_KEY,ROW_INDEX);
- iRefXChangeId = Join_GetIntFromIndex(g_stJoins.m_iXChangeTransfert_ifkIDXChangeID,iExistXchangeRow);
-
- // Update record
- iValid = fn_iRecordTransfertProposition(_iTeamId,iRefXChangeId,iExistXchangeRow,_iDatabase,_iRow);
- }
- else
- {
- var i32x iNewRow;
- // New proposition
- // Create a new row in DYN_xchange_cyclist
- iNewRow = Table_AddRow(DATABASE_SERVER,Table_GetIndexFromName(DATABASE_SERVER,"DYN_xchange_transfert"));
-
- // Update record
- iValid = fn_iRecordTransfertProposition(_iTeamId,0,iNewRow,_iDatabase,_iRow);
- }
- }
- else if(iSens == 1)
- {
- // Team seller to team buyer proposition
- if((iStatus==e_Status_Accepted)||(iStatus==e_Status_Refused)||(iStatus==e_Status_Countered))
- {
- // The team has accepted or refused the cyclist counter proposition
- var i32x iRefXChangeId,iExistXChangeId,iExistXchangeRow;
-
- // Update it and mark it as accepted or refused
- // Get key
- iExistXChangeId = Database_GetIntData(iSubsetId,"DYN_xchange_transfert.IDxchange_transfert",ROW_INDEX,0);
- iExistXchangeRow = Join_GetRow(g_stJoins.m_iXChangeTransfert_iXChangeID,iExistXChangeId,ROW_KEY,ROW_INDEX);
- iRefXChangeId = Join_GetIntFromIndex(g_stJoins.m_iXChangeTransfert_ifkIDXChangeID,iExistXchangeRow);
-
- // Update answer
- Join_SetIntFromIndex(g_stJoins.m_iXChangeTransfert_iStatusId,iExistXchangeRow,iStatus);
-
- iValid = 1;
- }
- }
- // Destroy subset
- Subset_Destructor(iSubsetId);
-
- return iValid;
- }
-
- func i32x fn_iRecordTransfertProposition(i32x _iTeamId,i32x _iRefXchangeId,i32x _iExistXchangeRow,i32x _iDatabase,i32x _iRow)
- {
- // CyclistID
- println("Transfert of cyclist:"+itoa(Database_GetIntData(_iDatabase,"DYN_xchange_transfert.fkIDcyclist",ROW_INDEX,_iRow)));
- Join_SetIntFromIndex(g_stJoins.m_iXChangeTransfert_iCyclistID,_iExistXchangeRow,
- Database_GetIntData(_iDatabase,"DYN_xchange_transfert.fkIDcyclist",ROW_INDEX,_iRow));
-
- // Team id
- Join_SetIntFromIndex(g_stJoins.m_iXChangeTransfert_iTeamID,_iExistXchangeRow,_iTeamId);
-
- // Sens
- Join_SetIntFromIndex(g_stJoins.m_iXChangeTransfert_iSens,_iExistXchangeRow,
- Database_GetIntData(_iDatabase,"DYN_xchange_transfert.ia_i_sens",ROW_INDEX,_iRow));
-
- // Change status to new only if last has been countered
- var i32x iLastStatus;
- iLastStatus = Join_GetIntFromIndex(g_stJoins.m_iXChangeTransfert_iStatusId,_iExistXchangeRow);
- if((iLastStatus == e_Status_Countered)||(iLastStatus == 0))
- Join_SetIntFromIndex(g_stJoins.m_iXChangeTransfert_iStatusId,_iExistXchangeRow,e_Status_New);
-
- // Init amount
- Join_SetFloatFromIndex(g_stJoins.m_iXChangeTransfert_fInitAmount,_iExistXchangeRow,
- Database_GetFloatData(_iDatabase,"DYN_xchange_transfert.finan_f_period_amount",ROW_INDEX,_iRow));
-
- // Old Xchange id
- Join_SetIntFromIndex(g_stJoins.m_iXChangeTransfert_ifkIDXChangeID,_iExistXchangeRow,_iRefXchangeId);
-
- // Mark it as last
- Join_SetIntFromIndex(g_stJoins.m_iXChangeTransfert_iLast,_iExistXchangeRow,1);
-
- // Unvalid last flag of old xchange id
- if(_iRefXchangeId)
- {
- Join_SetIntFromKey(g_stJoins.m_iXChangeTransfert_iLast,_iRefXchangeId,0);
- // And mark other has countered
- Join_SetIntFromKey(g_stJoins.m_iXChangeTransfert_iStatusId,_iRefXchangeId,e_Status_Countered);
- }
-
- return 1;
- }
-
- func i32x fn_iRecordGoals(i32x _iExistXChangeId,i32x _iPropXChangeId,i32x _iType,i32x _iDatabase)
- {
- var i32x iSubsetId,iNumExistRows,iNumNewRows,iSrcSubsetId;
- var i32x iJoin_GoalId,iJoin_fAmount,iJoin_iType,iJoin_fkIdXchange;
- var i32x iSrcJoin_GoalId,iSrcJoin_fAmount;
- var i32x i,iRow,iTableId,iGoalId;
- var f32x fAmount;
- // Create subset with existing goals in database
- iSubsetId = Subset_Constructor("SUBSET_GOALS",DATABASE_SERVER);
- Database_AddTables(iSubsetId,1);
- Table_SetName(iSubsetId, 0, "DYN_xchange_goal");
- TableSubset_SelectColumns(iSubsetId,0,"*");
- Query_Create(0,iSubsetId);
- Query_SelectTable(0,"DYN_xchange_goal");
- Query_SelectWhereIntEqual(0,"DYN_xchange_goal.gene_i_xchange_type",_iType);
- Query_SelectWhereIntEqual(0,"DYN_xchange_goal.fkIDxchange",_iExistXChangeId);
- Query_Execute(0);
-
- // Join on server database
- iTableId = Table_GetIndexFromName(iSubsetId,"DYN_xchange_goal");
- iJoin_GoalId = Join_Constructor(iSubsetId,"DYN_xchange_goal.fkIDgoal");
- iJoin_fAmount = Join_Constructor(iSubsetId,"DYN_xchange_goal.finan_f_bonus");
- iJoin_fkIdXchange = Join_Constructor(iSubsetId,"DYN_xchange_goal.fkIDxchange");
- iJoin_iType = Join_Constructor(iSubsetId,"DYN_xchange_goal.gene_i_xchange_type");
- iNumExistRows = Join_GetNumRows(iJoin_GoalId);
-
- // Create subset with proposition goals in database
- iSrcSubsetId = Subset_Constructor("SUBSET_USERGOALS",_iDatabase);
- Database_AddTables(iSrcSubsetId,1);
- Table_SetName(iSrcSubsetId, 0, "DYN_xchange_goal");
- TableSubset_SelectColumns(iSrcSubsetId,0,"*");
- Query_Create(0,iSrcSubsetId);
- Query_SelectTable(0,"DYN_xchange_goal");
- Query_SelectWhereIntEqual(0,"DYN_xchange_goal.gene_i_xchange_type",_iType);
- Query_SelectWhereIntEqual(0,"DYN_xchange_goal.fkIDxchange",_iPropXChangeId);
- Query_Execute(0);
-
-
- // Join on user database
- iSrcJoin_GoalId = Join_Constructor(iSrcSubsetId,"DYN_xchange_goal.fkIDgoal");
- iSrcJoin_fAmount = Join_Constructor(iSrcSubsetId,"DYN_xchange_goal.finan_f_bonus");
- iNumNewRows = Join_GetNumRows(iSrcJoin_GoalId);
-
- i=0;
- while(i<iNumNewRows)
- {
- iGoalId = Join_GetIntFromIndex(iSrcJoin_GoalId,i);
- fAmount = Join_GetFloatFromIndex(iSrcJoin_fAmount,i);
-
- if(i>=iNumExistRows)
- {
- iRow = Table_AddRow(iSubsetId,iTableId);
- Join_SetIntFromIndex(iJoin_fkIdXchange,iRow,_iExistXChangeId);
- Join_SetIntFromIndex(iJoin_iType,iRow,_iType);
- }
- else
- {
- iRow = i;
- }
- Join_SetIntFromIndex(iJoin_GoalId,iRow,iGoalId);
- Join_SetFloatFromIndex(iJoin_fAmount,iRow,fAmount);
- i=i+1;
- }
-
- Join_Destructor(iSrcJoin_GoalId);
- Join_Destructor(iSrcJoin_fAmount);
-
- Join_Destructor(iJoin_GoalId);
- Join_Destructor(iJoin_fAmount);
- Join_Destructor(iJoin_fkIdXchange);
- Join_Destructor(iJoin_iType);
-
- Subset_Destructor(iSrcSubsetId);
- Subset_Destructor(iSubsetId);
- return 1;
- }